System.Enum.TryParse 方法 (String, TEnum%)

方法描述

将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 用于指示转换是否成功的返回值。

语法定义(C# System.Enum.TryParse 方法 (String, TEnum%) 的用法)

public static bool TryParse(
	string value,
	out TEnum result
)
where TEnum : struct, new()

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
value System-String 要转换的枚举名称或基础值的字符串表示形式。
result TEnum% 此方法在返回时包含一个类型为 TEnum 的一个对象,其值由 value 表示。该参数未经初始化即被传递。
返回值 System.Boolean 如果 value 参数成功转换,则为 true;否则为 false。

提示和注释

TryParse(String, TEnum) 与 Parse(Type, String) 方法完全相同,不同之处在于转换失败时,返回 false,而不引发异常。 它消除了在分析的枚举值字符串表示形式时对异常处理的需要。

value 参数中包含枚举成员的基础值或已命名常数、或者用逗号 (,) 分隔的已命名常数或基础值列表的字符串表现形式。 如果 value 包含多个命名常数或值,则 value 中的每个值、名称或逗号的前面或后面都可以有一个或多个空格。 如果 value 是一个列表,则 result 反映了指定名称的值或与位 OR 运算合并的基础值。 如果 value 是枚举值名称的字符串表示形式,则 value 与枚举名称的比较是分大小写的。

如果 value 是一个不对应 TEnum 的命名常数的名称,则该方法将返回 false。 如果 value 是一个不表示 TEnum 枚举基础值的整数的字符串表示形式,则此方法将返回基础值是已转换为整型的 value 的枚举成员。 如果不希望此行为发生,则请调用 IsDefined 方法以确保整数的特定字符串表示形式实际是 TEnum 的成员。

System.Enum.TryParse 方法 (String, TEnum%)例子

下面的示例定义 Colors 枚举,调用 TryParse(String, TEnum) 方法将字符串转换为其对应的枚举值,并调用 IsDefined 方法以确保特定整数值是 Colors 枚举中的基础值。

using System;

[Flags] enum Colors { None=0, Red = 1, Green = 2, Blue = 4 };

public class Example
{
   public static void Main()
   {
      string[] colorStrings = { "0", "2", "8", "blue", "Blue", "Yellow", "Red, Green" };
      foreach (string colorString in colorStrings)
      {
         Colors colorValue;
         if (Enum.TryParse(colorString, out colorValue))        
            if (Enum.IsDefined(typeof(Colors), colorValue) | colorValue.ToString().Contains(","))  
               Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString());
            else
               Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString);
         else
            Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString);
      }
   }
}
// The example displays the following output:
//       Converted '0' to None.
//       Converted '2' to Green.
//       8 is not an underlying value of the Colors enumeration.
//       blue is not a member of the Colors enumeration.
//       Converted 'Blue' to Blue.
//       Yellow is not a member of the Colors enumeration.
//       Converted 'Red, Green' to Red, Green.

异常

异常 异常描述
ArgumentException TEnum 不是枚举类型。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4 .NET Framework Client Profile 受以下版本支持:4

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。